/*
 * @Author: lei
 * @Date: 2021-08-02 12:28:36
 * @LastEditTime: 2021-08-02 13:20:13
 * @LastEditors: Please set LastEditors
 * @Description: explicit使用
 * @FilePath: /code/explicit.cpp
 */

#include <iostream>
#include <cstring>
using namespace std;

class A
{
public:
    int var;
    A(int tmp)
    {
        var = tmp;
        cout<<"单参构造函数调用, var= "<<var<<endl;
    }
    A& operator=(const A& a)
    {
        cout<<"拷贝赋值运算符调用"<<endl;
        this->var=a.var;
        return *this;
    }
    A(const A& a)
    {
        cout<<"拷贝构造函数调用"<<endl;
        var=a.var;
    }
};
int main()
{
    //A ex = 10; // 发生了隐式转换,但没有发生赋值操作，等价于A ex(10);
    /*上句执行结果：
    单参构造函数调用, var= 10*/

    //A ex(0); ex = 10;//发生了隐私转换和拷贝赋值；
    /*上句执行结果：
    单参构造函数调用, var= 0
    单参构造函数调用, var= 10
    拷贝赋值运算符调用*/
    return 0;
}
